An integrated circuit typically includes a variety of terminal connectors or pads. Some pads are designated for data communication with devices such as memory, while other pads are dedicated for input/output communication with modules, peripherals, and other devices. Often, as the complexity of the chip increases the need to use a single pad for multiple functions becomes advantageous. Pads used for multiple functions are typically multiplexed and a path selector determines an internal communication path based on function. The function of each terminal connector is then programmably specified by the user. In this way, the size of the integrated circuit is not greatly impacted, while the flexibility of the device to meet the needs of different users is increased.
Often terminal connectors, or ports, incorporate pull devices to maintain an output level or a high impedence level when the pad is not in use. Pull devices used to assure a certain state of the pad include pull-up devices and pull-down devices, used to maintain a high or low level output voltage respectively. The user enables or disables the pull device associated with a pad based on the functionality of that pad. For example, when a pad is used for data communication, the pad is subject to a data transfer protocol. Here the pad may be used to communicate address information, data information, and control information in a predetermined order. The combination and order of information transferred on each pad is defined by the protocol. The pull vice is disabled and should not be enabled until completion of the transaction. If the integrated circuit is reset and the pull device is enabled prior to the termination of the transaction, there may be a data coherency problem. During data communication it is important that each device receive all necessary information before the transaction terminates. It is therefore desirable to wait until the transaction is completed before effecting a change to the pull device.
For a multiplexed pad, a same pad is used as a general purpose input/output (GPIO) and as a data port. It is typically desirable to enable a pull device associated with a GPIO pad when not in use, however, the pull device is disabled for the data port. On reset, the pull device of a GPIO pad is enabled to avoid any spurious signal generation for an application. For example, in an automotive design the GPIO pads may control any number of modules within the system; after reset it is important to maintain a known state, and thus avoid providing an unintended control signal. After reset the pull device on the GPIO pad may be disabled in software. This is true, even though the pull device may be disabled for prolonged periods during operation. Any number of events may result in a reset of the circuit. Since a given pad may be configured with the pull device on or off, a problem arises on reset in determining how to configure the pull device. If the pad was used for data transaction prior to reset, a data coherency problem may exist if the pull device is enabled before the data transaction is completed.
A need exists for a method of controlling a pull device associated with a multiplexed pad, which avoids data coherency issues, while providing a flexible mechanism for pull device control. Additionally, it is desirable to have a means of preventing enablement of the pull device while the integrated circuit is in data transaction mode, such as inadvertent software operations, or simultaneous use by multiple masters.